feat: Dashboard enterprise-grade organization with drag-and-drop#1972
feat: Dashboard enterprise-grade organization with drag-and-drop#1972alex-fedotyev wants to merge 7 commits intomainfrom
Conversation
|
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Knip - Unused Code Analysis⚪ 0 change in total issues (240 on main → 240 on PR)
What is this?Knip finds unused files, dependencies, and exports in your codebase. Run |
PR Review
|
E2E Test Results✅ All tests passed • 91 passed • 3 skipped • 951s
Tests ran across 4 shards in parallel. |
9d1a5c2 to
0d2b11f
Compare
a7afc78 to
fd8799e
Compare
fd8799e to
20a628e
Compare
d65d046 to
0fb0522
Compare
0fb0522 to
e38c98b
Compare
e38c98b to
74ee92a
Compare
74ee92a to
4aee30f
Compare
4aee30f to
ae5981a
Compare
ae5981a to
82579ce
Compare
82579ce to
8d7be4f
Compare
8d7be4f to
de53c17
Compare
de53c17 to
39414b1
Compare
39414b1 to
6ea1263
Compare
6ea1263 to
1929e28
Compare
1929e28 to
aeaca9e
Compare
aeaca9e to
2682bfe
Compare
2682bfe to
066d76d
Compare
section + group types. Groups always have tabs array (min 1 tab). 1 tab = plain group, 2+ tabs = tab bar. tabId on tiles for tab assignment. activeTabId persisted (Grafana/Kibana pattern).
DashboardDndContext: sortable container reorder provider. DashboardDndComponents: EmptyContainerPlaceholder with [+ Add] button (fw=400 matching bottom Add), SortableSectionWrapper.
1 tab: plain header showing tabs[0].title, rename edits the tab. 2+ tabs: tab bar with hover-only x, inline +, double-click rename. No separate container title — group identity IS the first tab. Adding tab to 1-tab group adds second tab. Removing to 1 reverts.
Groups always created with 1 tab. Add Tab adds 2nd tab. Delete to 1 keeps tab. Header rename syncs tabs[0]. Always-confirm delete.
RGL-native positioning (x=0, y=0, auto-compact fills right then wraps). Section empty state wired with onAddTile. Floating drag bar on hover. Move dropdown: 1-tab group shows name directly, 2+ shows Group > Tab. Delete confirmation always shown. Select-and-group with Cmd+G.
066d76d to
8dde894
Compare
54 tests: group always has 1 tab, add tab creates 2nd, title syncs from tabs[0], delete to 1 keeps tab, section reorder, tile grouping.
8dde894 to
7815b5e
Compare
Summary
Implements the remaining features from #1929: drag-and-drop tile organization, section reordering, tab and group container types, and UX polish.
Builds on #1926 (authoring UX + DashboardContainer abstraction).
Changes by commit
feat: Extend DashboardContainer schema for tab and group types'tab'and'group'to the container type enumactiveTabIdfor tab state,parentIdfor child tab containersfeat: Add @dnd-kit drag-and-drop infrastructure for dashboards@dnd-kit/core,@dnd-kit/sortable,@dnd-kit/utilitiesDashboardDndContext.tsx: provider, drag handles, drop zones, sortable wrapperspointerWithincollision detection for correct cross-section targetingfeat: Add GroupContainer and TabContainer componentsGroupContainer: bordered, always-visible, drag handle, inline renameTabContainer: multi-tab bar with add (+), rename (double-click), remove (x), tab switchingfeat: Add drag handle to SectionHeader, fix theme-aware bordersvar(--mantine-color-default-border)for light/dark themesfeat: Integrate DnD, container types, and polish into dashboard pagetest: Add tests for container types, reordering, and grouping— 14 new testsfeat: Implement multi-tab container supportparentIdon containers links child tabs to parent tab setVerified via Playwright MCP on Vercel preview
Test plan
Closes #1929